#ifndef __COMPONENT_H__
#define __COMPONENT_H__

#include <string>

class Component
{
public:
    Component(std::string name) : name_(name) {}
    virtual ~Component() = default;

    virtual void Add(Component *com) {}
    virtual void Remove(Component *com) {}
    virtual Component *Get(int idx) {return NULL;}

    virtual void Operation() = 0;
protected:
    std::string name_;
};

#endif

